package org.huawei260.TiKu.ODsuanfa;

import java.util.Arrays;
import java.util.Scanner;
public class D_2024D_3102__贪心_停车找车位 {

//	public class Main {
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
			int[] nums = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
			System.out.println(getResult(nums));
		}

		public static int getResult(int[] nums) {
			int n = nums.length;

			// leftFree[i] 表示第i个车位的左边空闲车位个数
			int[] leftFree = new int[n];
			for (int i = 1; i < n; i++) {
				if (nums[i] == 1) continue;

				if (nums[i - 1] == 0) {
					leftFree[i] = leftFree[i - 1] + 1;
				} else {
					leftFree[i] = 0;
				}
			}

			// rightFree[i] 表示第i个车位的右边空闲车位个数
			int[] rightFree = new int[n];
			for (int i = n - 2; i >= 0; i--) {
				if (nums[i] == 1) continue;

				if (nums[i + 1] == 0) {
					rightFree[i] = rightFree[i + 1] + 1;
				} else {
					rightFree[i] = 0;
				}
			}

			// 如果第0个车位是空闲车位，那么第0个车位的最大距离就是它右边的空闲车位个数
			// 如果第n-1个车位是空闲车位，那么第n-1个车位的最大安全距离就是它左边的空闲车位个数
			int ans = Math.max(rightFree[0], leftFree[n - 1]);

			// 对于第i个车位（i取值1~n-2），其最大距离取min(leftFree[i], rightFree[i])
			for (int i = 1; i < n - 1; i++) {
				if (nums[i] == 1) continue;
				ans = Math.max(ans, Math.min(leftFree[i], rightFree[i]));
			}

			// ans记录的空闲车位数，转化为距离要+1
			return ans + 1;
		}
	}
